package 集合.LIST;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.function.Consumer;

public class list {
    public static void main(String[] args) {
/*    list集合的特点：
        有序：存和取的元素顺序是一样的
        有索引：可以通过索引查找元素
        可重复：元素可重复
 */
        /*
            void add(int index,E element)    在集合中的指定位置插入指定的元素
            E remove(int index)       删除指定索引处的元素，返回被删除的元素
            E set(int index,E element) 修改指定索引处的元素，返回被修改的元素
            E get(int index)        返回指定所引出的元素
         */
//        创建集合
        List<String>list=new ArrayList<>();
//        在集合中添加元素(注意是字符串类型的)
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add(1,"TTT");
        System.out.println(list);
        list.remove(1);
//        list.remove("aaa");
//        list集合中的两个删除方法：删除索引位置上的元素/直接删除元素
        System.out.println(list);
        list.set(1,"XXX");
        System.out.println(list);
        System.out.println(list.get(1));

        /*
        遍历方式对比：
        迭代器遍历:在遍历的过程中需要删除元素，请使用迭代器
        列表迭代器：在遍历的过程中需要添加元素，请使用列表迭代器
        增强for遍历和lambda表达式：仅仅需要遍历，使用这两种方法
        普通for：如果遍历的时候想操作索引，可以用普通for
         */



//     迭代器遍历：
        System.out.println("----------------迭代器遍历-------------");
        Iterator<String> it= list.iterator();
        while(it.hasNext()){
            String str=it.next();
            System.out.println(str);
        }
//        增强for遍历
        System.out.println("----------------增强for遍历-------------");
        for (String s:list){
            System.out.println(s);
        }
        //            lambda表达式
        System.out.println("----------------lambda表达式-----------------");
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
//              普通for遍历
        System.out.println("--------------普通for遍历-------------------");
        for (int i = 0; i < list.size(); i++) {
            if (i==list.size()-1){
                System.out.print(list.get(i));
            }else {
                System.out.print(list.get(i)+",");
            }
        }
        System.out.println();
//        列表迭代器遍历
        System.out.println("-----------------列表迭代器遍历--------------");
//      列表迭代器和迭代器本质一样，不过可以添加元素
        ListIterator<String> it1 = list.listIterator();
        while (it1.hasNext()){
            String str=it1.next();
            if ("ccc".equals(str)) {
                it1.add("qqq");
            }
            System.out.println(str);
        }
        System.out.println(list);

    }
}
